package ufabc.edu.helppo.gerador;

import java.util.List;
import java.security.MessageDigest;

import org.hibernate.Session;

import ufabc.edu.helppo.persistencia.HibernateUtil;
import ufabc.edu.helppo.persistencia.entidades.Usuario;

public class ConsultaLogin {

	//md5
	private static String stringHexa(byte[] bytes) {
		StringBuilder s = new StringBuilder();
		for (int i = 0; i < bytes.length; i++) {
			int parteAlta = ((bytes[i] >> 4) & 0xf) << 4;
			int parteBaixa = bytes[i] & 0xf;
			if (parteAlta == 0)
				s.append('0');
			s.append(Integer.toHexString(parteAlta | parteBaixa));
		}
		return s.toString();
	}

	public static byte[] gerarHash(String frase) {
		try {
		MessageDigest md = MessageDigest.getInstance("MD5");
			md.update(frase.getBytes());
			return md.digest();
		} catch (Exception e) {
			return null;
		}
	}
	
	public static String md5(String texto) {
		return stringHexa(gerarHash(texto));
	}
	//md5
	
	//verifica se o login esta correto
	public Usuario login(String firstName, String lastName, String password) {

		String passwordTratado = md5(md5(password) + ":");

		Session session = HibernateUtil.getSessionFactory().openSession();
		List<Usuario> usuarios = (List<Usuario>) session.createQuery(
				"FROM Usuario WHERE username = '" + firstName + "' AND "
						+ "lastname='" + lastName + "' AND " + "passwordHash='"
						+ passwordTratado + "'").list();

		session.close();
		if (usuarios.size() == 1) {
			return usuarios.get(0);
		} else {
			return null;
		}
	}
	
	
	//verifica se o usuario existe
	public Usuario login(String firstName, String lastName) {

		Session session = HibernateUtil.getSessionFactory().openSession();
		List<Usuario> usuarios = (List<Usuario>) session.createQuery(
				"FROM Usuario WHERE username = '" + firstName + "' AND "
						+ "lastname='" + lastName + "'").list();

		session.close();
		if (usuarios.size() == 1) {
			return usuarios.get(0);
		} else {
			return null;
		}
	}
	
}
